# Changelog(s)

## 15/06/2020 (Beta)

### Game.ScreenFade

> * Fixed on showing screen fade, ignoring player's index.

## 19/05/2020 (Beta)

### Globals

> * Changed `_DEBUG` -> Moved into `Debug.enable`.
> * Changed `debug_print` -> Moved into `Debug.print`.
> * Changed `table.extend` -> Added `functionSelfOverride` parameter to passing derived table as `self` when accessing base or parent table's functions.
> * Added `.extendedTable` data structure.
> * Added `.extendedMetatable` data structure.
> * Added `AssertType` function.
> * Added `Debug` class.
> * Added `System` module.

### Debug

> * Added `Debug.enable` property.
> * Added `Debug.print` function.

### Hook

> * Changed `.hookContainer` -> Removed `_baseMethodTable` property, Moved `_hookNameComparator` property into `.hookContainerMetatable.__hookNameComparator`.
> * Changed `Hook:Create` -> Removed `baseMethodTable` parameter, Added `functionSelfOverride` parameter to passing hook table as `self` when accessing base table's functions.
> * Added `.hookContainerMetatable` data structure.

### System

> * Added `System.FONT.YGO340`, `System.FONT.DFYuanW9_GB`, and `System.FONT.DFLiYuan_XB` properties.
> * Added `System:GetCharWidth` method.
> * Added `System.UTF8` library class.

### Common

> * Changed `Common.MSG` -> Moved into `Common.NetMessage.MSG`.
> * Changed `Common.NETMSG` -> Moved into `Common.NetMessage.TYPE`.
> * Added `Common.HUDText` class.

### Common.NetMessage

> * Added `Common.NetMessage.MSG` table.
> * Added `Common.NetMessage.TYPE` table.
> * Reworked, now each players has its own syncvalue rather than using a single shared syncvalue.

### Game

> * Changed `Game.MONSTERTYPE` -> Added Joseon Kingdom monsters (`Game.MONSTERTYPE.KINGDOM1`, `Game.MONSTERTYPE.KINGDOM2`, `Game.MONSTERTYPE.KINGDOM3`, `Game.MONSTERTYPE.KINGDOM4`).

### Game.TextMenu

> * Fixed when menu opening submenu and terminated abruptly.

### UI

> * Changed `UI:GetScreenAbsolutePosition` -> Negative values are accepted as reverse position, -1 as center position instead.
> * Added `UI.ProgressBar` class.

### UI.Rectangle

> * Extended from `UI.Box` for future-proof implementation.

### UI.ScreenFade

> * Reworked, follows Half-Life's original ScreenFade.

### UI.BarTime

> * Refactored and using `UI.ProgressBar` class.

## 14/04/2020 (Beta)

### Game.TextMenu

> * Fixed menu pagination error.

## 24/02/2020 (Beta)

### Globals

> * Changed `g_vecZero` -> Moved into `Common.vecZero`.
> * Changed `table.extend` -> Added `__index` support from derived tables.
> * Added `table.merge` function.
> * Added `table.clone` function.

### Hook

> * Changed `Hook:Create` -> Added `hookNameComparator` parameter for custom hook name bindings.

### Common

> * Changed `Common.MAX_PLAYER` -> Renamed to `Common.maxPlayer`.
> * Added `Common.vecZero` property.
> * Added `Common.emptyFunc` property.
> * Added `Common.COLOR` property.
> * Added `Common.Color` class.
> * Added `Common.ScreenFade` class.

### Common.NetMessage

> * Changed `Common.NetMessage:OnSent` -> Removed `formats` parameter, Changed data type of `args` into `.netArgumentProperty`.
> * Changed `Common.NetMessage:OnReceived` -> Removed `formats` parameter, Changed data type of `args` into `.netArgumentProperty`.

### Common.TextMenu

> * Changed `Common.TextMenu.MAX_SLOT` -> Renamed to `Common.TextMenu.maxSlot`.

### Game

> * Changed `Game.MONSTERTYPE` -> Extended table with all spawnable monsters.
> * Changed `Game.TextMenu` -> Added multiple-hooks registration.
> * Added `Game.GetDeltaTime` function.
> * Added `Game.ScreenFade` class.
> * Added `Game.BarTime` class.

### Game.NetMessage

> * Changed `Game.NetMessage:Begin` -> Added support for table options (`.netMessageBeginOption`).

### Game.TextMenu

> * Changed `Game.TextMenu.CONFIG` -> Use associative array instead of numeric.
> * Changed `Game.TextMenu.config` -> Use associative array instead of numeric.
> * Changed `Game.TextMenu:Get` -> Added support for table options (`.textMenuConfiguration`).
> * Changed `Game.TextMenu:Set` -> Added support for table options (`.textMenuConfiguration`).
> * Changed `Game.TextMenu:Open` -> Added support for table options (`.textMenuOpenOption`).

### UI

> * Changed `UI.TEXT_MENU_RIGHT_ALIGN_OFFSET_X` -> Moved into `UI.TextMenu.rightAlignmentHorizontalOffset`.
> * Added `UI.GetDeltaTime` function.
> * Added `UI.GetScreenRelativePosition` function.
> * Added `UI.GetScreenAbsolutePosition` function.
> * Added `UI.GetCenterPosition` function.
> * Added `UI.Rectangle` class.
> * Added `UI.ScreenFade` class.
> * Added `UI.BarTime` class.

### UI.TextMenu

> * Changed `UI.TextMenu.SPACE_HEIGHT_AFTER_LINE` -> Renamed to `UI.TextMenu.bottomPaddingSize`.
> * Added `UI.TextMenu.rightAlignmentHorizontalOffset` property.

## 08/02/2020 (Beta)

> * Fixed dangling pointers when a hook is removed.
> * Fixed hook call-chaining bugs for not returning correct values.
> * Fixed broken `Game.Rule` methods.

## 23/01/2020 (Beta)

> * Initial public release.
